home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / asmsrc / sfintro1.lha / singleintro2.s
Text File  |  1994-06-05  |  33KB  |  1,797 lines

  1.     Section Copperlist,code_C
  2.  
  3.     ;old intro and old boards, i think there all dead now!
  4.     ;and dodgy player
  5.     
  6.     ;by shgartt/lsd
  7.     
  8.     opt    c-,o+,w-
  9.         
  10. xpos1    = $07
  11. xpos2    = $07
  12. black    = $300
  13.  
  14. tall    = 8
  15. wide    = 80    
  16.  
  17. time    = 200        ; time page is displayed for
  18.  
  19. setsprite    MACRO
  20.  
  21.     dc.w    $0fe0,$0820,$3c78,$2448,$600c,$5014,$4004,$2008
  22.     dc.w    $c006,$8002,$c006,$4004,$8002,$0000,$8002,$0000
  23.     dc.w    $8002,$0000,$c006,$4004,$c006,$8002,$4004,$2008
  24.     dc.w    $600c,$5014,$3c78,$2448,$0fe0,$0820,$0000,$0000
  25.  
  26.     ENDM
  27.  
  28.     ************
  29.  
  30.     lea    $dff000,a5        ; hardware base address
  31.  
  32.     Move.w    $1c(a5),OldInt        ; Save Old Interupts
  33.     Move.w    $02(a5),OldDma        ; Save Old DMA
  34.  
  35.     Move.w    #$7fff,$9a(a5)        ; Clear DMA
  36.     Move.w    #$7fff,$96(a5)        ; Clear Interupts
  37.     Move.w    #$7fff,$9c(a5)        ; Clear Interupt Requests
  38.     
  39.     Move.b    #$7f,$bfed01        ; kill timers (rem me for disk)
  40.     Move.l    $6c.w,OldV3        ; save level 3 int
  41.  
  42.     Move.l    #my_level3,$6c.w    ; put new copper interupt
  43.     Move.l    #my_copper,$80(a5)     ; Address of copper 1
  44.     Move.w    #$c010,$9a(a5)        ; Start interupts
  45.  
  46.     Move.w    #$83ef,$96(a5)        ; Start DMA ( 83ff for disk dma)
  47.     Move.w    #1,$88(a5)        ; Strobe for copper start
  48.  
  49.     bsr    mt_init
  50.     
  51.     move.l    #Screen+32,d0    ; store address of bitplane0
  52.     move.w    d0,bitplane0_lo    ; into the copper list
  53.     swap    d0
  54.     move.w    d0,bitplane0_hi
  55.     swap    d0
  56.     add.l    #bplen,d0
  57.  
  58.     move.w    d0,bitplane1_lo    ; into the copper list
  59.     swap    d0
  60.     move.w    d0,bitplane1_hi
  61.     swap    d0
  62.     add.l    #bplen,d0
  63.  
  64.     move.w    d0,bitplane2_lo    ; into the copper list
  65.     swap    d0
  66.     move.w    d0,bitplane2_hi
  67.     swap    d0
  68.     add.l    #bplen,d0
  69.  
  70.     move.w    d0,bitplane3_lo    ; into the copper list
  71.     swap    d0
  72.     move.w    d0,bitplane3_hi
  73.  
  74.     move.l    #screen2+20,d0
  75.     move.w    d0,bitplane4_lo
  76.     swap     d0
  77.     move.w    d0,bitplane4_hi
  78.     
  79.     move.l    #spritex1,d0
  80.     move.w    d0,spr1_hi
  81.     swap    d0
  82.     move.w    d0,spr1_lo
  83.     move.l    #spritex2,d0
  84.     move.w    d0,spr2_hi
  85.     swap    d0
  86.     move.w    d0,spr2_lo
  87.     move.l    #spritex3,d0
  88.     move.w    d0,spr3_hi
  89.     swap    d0
  90.     move.w    d0,spr3_lo
  91.  
  92.     
  93.  
  94. again:    
  95.     lea    page1,a0
  96.     bsr    show_page
  97.     bne    shutdown
  98.     
  99.     lea    page2,a0
  100.     bsr    show_page
  101.     bne    shutdown
  102.     
  103.     lea    page3,a0
  104.     bsr    show_page
  105.     bne    shutdown
  106.  
  107.     lea    page4,a0
  108.     bsr    show_page
  109.     bne    shutdown
  110.  
  111.     bra    again
  112.         
  113. shutdown:
  114.     lea    $dff000,a5        ; hardware base address
  115.     move.l    #0,$80(a5)        ; blank copper list
  116.     move.l    #0,$84(a5)        ; if gfx lib not open (slayer boot)
  117.     move.w    #0,$180(a5)        ; bgc to black
  118.     
  119.     Move.l    OldV3,$6c.w        ; restore old l3
  120.  
  121.     cmp.w    #$7fff,olddma
  122.     beq    no_gfx_lib
  123.  
  124.     Lea    glib,a1            ; Pointer to Library Text
  125.     move.l    4.w,a6
  126.     jsr    -132(a6)        ; forbid
  127.     Move.l    4.w,a6            ; Exec
  128.     Moveq.l    #0,d0            ; Clear D0
  129.     Jsr    -$228(a6)        ; Open Library
  130.     cmp.l    #0,d0
  131.     beq    no_gfx_lib        ; if gfx lib not open dont restore copper lib (slayer boot)
  132.     
  133.     Move.l    d0,a1            
  134.     Move.l    $26(a1),$80(a5)        ; restore copper 1
  135.     Move.l    $32(a1),$84(a5)        ; restore copper 2
  136. no_gfx_lib:
  137.  
  138.     Move.w    OldInt,d0        ; start old interupts
  139.     Or.w    #$8000,d0
  140.     Move.w    d0,$9a(a5)
  141.     Move.w    OldDma,d0        ; start old DMA
  142.     Or.w    #$8000,d0
  143.     Move.w    d0,$96(a5)
  144.     Move.b    #$9b,$bfed01        ; Start Timers
  145.     Move.l    4.w,a6            ; Close Gfx lib
  146.     Jsr    -$19e(a6)
  147.     move.l    4.w,a6
  148.     jsr    -138(a6)        ; permit
  149.  
  150.     bsr    mt_end
  151.  
  152.     move.w    #0,$bfec00        ; clear kbd
  153.  
  154.     Moveq.l    #0,d0            ; No errors
  155.     Rts                ; Exit
  156.  
  157.     
  158.     bsr    mt_end
  159.     
  160. Error:    moveq    #0,d0            ; fin
  161.     rts
  162.  
  163. show_page:
  164.     move.w    #0,fade_colour    
  165.     
  166.     move.l    a0,page
  167.     bsr    setup_screen
  168.     
  169.     move.w    #$111,fade_colour
  170.     
  171. wait_fade1:
  172.     cmp.w    #$fff,colour_on+2
  173.     bne    wait_fade1
  174.  
  175.     move.w    #0,fade_colour    
  176.  
  177.     bsr    keys
  178.     cmp.l    #0,d0
  179.     bne    stop
  180.     
  181.     move.w    #-$111,fade_colour
  182.     
  183. wait_fade2:
  184.     cmp.w    #$000,colour_on+2
  185.     bne    wait_fade2
  186.  
  187. stop:
  188.     rts
  189.     
  190.  
  191. keys:    move.l    #time*$1000,d0
  192. waiting:
  193.     sub.l    #1,d0
  194.     beq    keys2
  195.     btst    #6,$bfe001
  196.     bne.s    waiting
  197.  
  198. keys2:    btst    #6,$bfe001
  199.     beq.s    keys2
  200.  
  201.     rts
  202.     
  203.  
  204. my_level3:
  205.     Movem.l    d0-d7/a0-a6,-(a7)    ; New copper
  206.     Move.w    #$10,$dff09c        ; Serviced Interupt
  207.  
  208.     cmp.w    #0,fade_colour
  209.     beq    no_fade
  210.     
  211.     move.w    fade_colour,d0
  212.     add.w    d0,colour_on+2
  213. no_fade:    
  214.  
  215.     bsr    mt_music
  216.  
  217.     lea    spritex1,a0
  218.     move.w    #12,d0
  219. spr1_loop:
  220.     add.b    #1,1(a0)
  221.     add.l    #68,a0
  222.     dbf    d0,spr1_loop
  223.  
  224.     lea    spritex2,a0
  225.     move.w    #12,d0
  226. spr2_loop:
  227.     add.b    #2,1(a0)
  228.     add.l    #68,a0
  229.     dbf    d0,spr2_loop
  230.  
  231.     lea    spritex3,a0
  232.     move.w    #11,d0
  233. spr3_loop:
  234.     add.b    #3,1(a0)
  235.     add.l    #68,a0
  236.     dbf    d0,spr3_loop
  237.  
  238. Exit:    Movem.l    (a7)+,d0-d7/a0-a6
  239.     Rte                ; Return from Interupt
  240.  
  241.     
  242.  
  243. setup_screen:
  244.     lea    cmap+2,a0
  245.     lea    screen,a1
  246.     move.w    #15,d0
  247.     
  248. cmap_loop:
  249.     move.w    (a1)+,(a0)
  250.     add.l    #4,a0
  251.     dbf    d0,cmap_loop
  252.  
  253.     lea    screen2,a0
  254.     move.w    #5119,d0
  255. cls:    move.l    #0,(a0)+
  256.     dbf    d0,cls
  257.  
  258.     move.l    page,a1
  259.     move.l    #screen2,a2
  260.     add.l    #(wide*2)+1,a2
  261.     jsr    blit_message
  262.  
  263.     moveq.l    #10,d0
  264.  
  265. plot_again:
  266.  
  267.     add.l    #wide*tall,a2
  268.     jsr    blit_message
  269.  
  270.     move.b    (a1),d0
  271.     bne.s    plot_again
  272.     
  273.     rts
  274.     
  275. blit_message:
  276.  
  277.     movem.l    d0-d7/a2-a6,-(sp)
  278.  
  279.     move.l    #0,midadd
  280.  
  281.     move.l    a1,a6
  282.     clr.b    d0
  283.     moveq.l    #-1,d1
  284.     
  285. blit_message_loop1:
  286.  
  287.     addq.l    #1,d1
  288.     move.b    (a6),d0
  289.     addq    #1,a6
  290.     cmp.b    #0,d0
  291.     bne.s    blit_message_loop1
  292.  
  293.     move.w    d1,d5
  294.     and.w    #1,d5
  295.     asl.w    #1,d5
  296.     move.w    d5,mid
  297.     
  298.     move.l    a2,midadd
  299.     move.w    d1,d5
  300.  
  301.     addq.l    #1,d1
  302.     lsr.l    #1,d1
  303.     moveq.l    #wide/2,d6
  304.     sub.l    d1,d6
  305.     add.l    d6,a2
  306.     move.l    a2,d2
  307.     and.l    #$fffffffe,d2
  308.     move.l    a2,d3
  309.     and.l    #1,d3
  310.     move.l    d2,a2
  311.     
  312.     move.w    #12,d6
  313.     cmp.l    #1,d3
  314.     beq.s    cont_blit_message
  315.     
  316.     add.w    #12,mid
  317.     subq.l    #2,midadd
  318.     
  319. cont_blit_message:
  320.     
  321.     move.w    d6,d7
  322.     mulu    #8192,d7
  323.     
  324.     subq.w    #4,d6
  325.     cmp.w    #4,d6
  326.     bne.s    other_half
  327.     
  328.     move.w    #12,d6
  329.     add.l    #wide*2,a2
  330.     
  331. other_half:
  332.  
  333.     sub.l    #wide,a2
  334.     clr.w    d0
  335.     lea    font,a0
  336.     move.b    (a1),d0
  337.     addq.l    #1,a1
  338.     cmp.b    #0,d0
  339.     bne.s    mess_is_ok
  340.  
  341.     movem.l    (sp)+,d0-d7/a2-a6    
  342.     
  343.     move.w    mid,d5
  344.     mulu    #8192,d5
  345.     or.w    #(%1001*256)+$f0,d5
  346.     
  347.     move.l    midadd,a3
  348.  
  349.     Move.l    a3,$dff054        ; dest mem d
  350.     Move.l    a2,$dff050        ; source mem a
  351.     Move.w    #$ffff,$dff044        ; blit 1st word mask source a
  352.     move.w    #$ffff,$dff046        ; blit last word mask source a
  353.     move.w    #0,$dff064        ; blit modulo for source a
  354.     move.w    d5,$dff040
  355.     move.w    #0,$dff042        ; blit cont reg 1
  356.     Move.w    #0,$dff066        ; modulo for dest
  357.     Move.w    #(8*64)+wide/2,$dff058    ; blit height,width
  358.  
  359.     jsr    do_blit
  360.  
  361. dont_centre:
  362.     rts
  363.     
  364.     
  365. mess_is_ok:
  366.     sub    #32,d0
  367.     mulu    #16,d0
  368.     add    d0,a0
  369.     
  370.     Move.l    a2,$dff054        ; dest mem d
  371.     Move.l    a0,$dff050        ; source mem a
  372.     move.l    a2,$dff048        ; source mem c
  373.     Move.w    #$ffff,$dff044        ; blit 1st word mask source a
  374.     move.w    #$ffff,$dff046        ; blit last word mask source a
  375.     move.w    #0,$dff064        ; blit modulo for source a
  376.     move.w    #wide-2,$dff060        ; blit modulo for source c    
  377.     or.w    #(%1011*256)+$fa,d7
  378.     move.w    d7,$dff040        ; blit cont reg 0
  379.     move.w    #0,$dff042        ; blit cont reg 1
  380.     Move.w    #wide-2,$dff066        ; modulo for dest
  381.     Move.w    #(8*64)+1,$dff058    ; blit height,width
  382.  
  383.     jsr    do_blit
  384.     
  385.     addq.l    #1,a2
  386.     bra    cont_blit_message
  387.  
  388. do_blit:
  389.     btst.b    #6,$dff002
  390.     bne.s    do_blit
  391.     rts
  392.     
  393.  
  394. tadd    equ    230*46
  395.  
  396. ;********************************************
  397. ;* ----- Protracker V1.1B Playroutine ----- *
  398. ;* Lars "Zap" Hamre/Amiga Freelancers 1991  *
  399. ;* Bekkeliveien 10, N-2010 STRØMMEN, Norway *
  400. ;********************************************
  401.  
  402. ; VBlank Version 2:
  403. ; Call mt_init to initialize the routine, then call mt_music on
  404. ; each vertical blank (50 Hz). To end the song and turn off all
  405. ; voices, call mt_end.
  406.  
  407. ; This playroutine is not very fast, optimized or well commented,
  408. ; but all the new commands in PT1.1A should work.
  409. ; If it's not good enough, you'll have to change it yourself.
  410. ; We'll try to write a faster routine soon...
  411.  
  412. ; Changes from V1.0C playroutine:
  413. ; - Vibrato depth changed to be compatible with Noisetracker 2.0.
  414. ;   You'll have to double all vib. depths on old PT modules.
  415. ; - Funk Repeat changed to Invert Loop.
  416. ; - Period set back earlier when stopping an effect.
  417.  
  418. DMAWait = 300 ; Set this as low as possible without losing low notes.
  419.  
  420. n_note        EQU    0  ; W
  421. n_cmd        EQU    2  ; W
  422. n_cmdlo        EQU    3  ; B
  423. n_start        EQU    4  ; L
  424. n_length    EQU    8  ; W
  425. n_loopstart    EQU    10 ; L
  426. n_replen    EQU    14 ; W
  427. n_period    EQU    16 ; W
  428. n_finetune    EQU    18 ; B
  429. n_volume    EQU    19 ; B
  430. n_dmabit    EQU    20 ; W
  431. n_toneportdirec    EQU    22 ; B
  432. n_toneportspeed    EQU    23 ; B
  433. n_wantedperiod    EQU    24 ; W
  434. n_vibratocmd    EQU    26 ; B
  435. n_vibratopos    EQU    27 ; B
  436. n_tremolocmd    EQU    28 ; B
  437. n_tremolopos    EQU    29 ; B
  438. n_wavecontrol    EQU    30 ; B
  439. n_glissfunk    EQU    31 ; B
  440. n_sampleoffset    EQU    32 ; B
  441. n_pattpos    EQU    33 ; B
  442. n_loopcount    EQU    34 ; B
  443. n_funkoffset    EQU    35 ; B
  444. n_wavestart    EQU    36 ; L
  445. n_reallength    EQU    40 ; W
  446.  
  447. mt_init    LEA    mt_data,A0
  448.     MOVE.L    A0,mt_SongDataPtr
  449.     MOVE.L    A0,A1
  450.     LEA    952(A1),A1
  451.     MOVEQ    #127,D0
  452.     MOVEQ    #0,D1
  453. mtloop    MOVE.L    D1,D2
  454.     SUBQ.W    #1,D0
  455. mtloop2    MOVE.B    (A1)+,D1
  456.     CMP.B    D2,D1
  457.     BGT.S    mtloop
  458.     DBRA    D0,mtloop2
  459.     ADDQ.B    #1,D2
  460.             
  461.     LEA    mt_SampleStarts(PC),A1
  462.     ASL.L    #8,D2
  463.     ASL.L    #2,D2
  464.     ADD.L    #1084,D2
  465.     ADD.L    A0,D2
  466.     MOVE.L    D2,A2
  467.     MOVEQ    #30,D0
  468. mtloop3    CLR.L    (A2)
  469.     MOVE.L    A2,(A1)+
  470.     MOVEQ    #0,D1
  471.     MOVE.W    42(A0),D1
  472.     ASL.L    #1,D1
  473.     ADD.L    D1,A2
  474.     ADD.L    #30,A0
  475.     DBRA    D0,mtloop3
  476.  
  477.     OR.B    #2,$BFE001
  478.     MOVE.B    #6,mt_speed
  479.     CLR.B    mt_counter
  480.     CLR.B    mt_SongPos
  481.     CLR.W    mt_PatternPos
  482. mt_end    CLR.W    $DFF0A8
  483.     CLR.W    $DFF0B8
  484.     CLR.W    $DFF0C8
  485.     CLR.W    $DFF0D8
  486.     MOVE.W    #$F,$DFF096
  487.     RTS
  488.  
  489. mt_music
  490.     MOVEM.L    D0-D4/A0-A6,-(SP)
  491.     ADDQ.B    #1,mt_counter
  492.     MOVE.B    mt_counter(PC),D0
  493.     CMP.B    mt_speed(PC),D0
  494.     BLO.S    mt_NoNewNote
  495.     CLR.B    mt_counter
  496.     TST.B    mt_PattDelTime2
  497.     BEQ.S    mt_GetNewNote
  498.     BSR.S    mt_NoNewAllChannels
  499.     BRA    mt_dskip
  500.  
  501. mt_NoNewNote
  502.     BSR.S    mt_NoNewAllChannels
  503.     BRA    mt_NoNewPosYet
  504.  
  505. mt_NoNewAllChannels
  506.     LEA    $DFF0A0,A5
  507.     LEA    mt_chan1temp(PC),A6
  508.     BSR    mt_CheckEfx
  509.     LEA    $DFF0B0,A5
  510.     LEA    mt_chan2temp(PC),A6
  511.     BSR    mt_CheckEfx
  512.     LEA    $DFF0C0,A5
  513.     LEA    mt_chan3temp(PC),A6
  514.     BSR    mt_CheckEfx
  515.     LEA    $DFF0D0,A5
  516.     LEA    mt_chan4temp(PC),A6
  517.     BRA    mt_CheckEfx
  518.  
  519. mt_GetNewNote
  520.     MOVE.L    mt_SongDataPtr(PC),A0
  521.     LEA    12(A0),A3
  522.     LEA    952(A0),A2    ;pattpo
  523.     LEA    1084(A0),A0    ;patterndata
  524.     MOVEQ    #0,D0
  525.     MOVEQ    #0,D1
  526.     MOVE.B    mt_SongPos(PC),D0
  527.     MOVE.B    (A2,D0.W),D1
  528.     ASL.L    #8,D1
  529.     ASL.L    #2,D1
  530.     ADD.W    mt_PatternPos(PC),D1
  531.     CLR.W    mt_DMACONtemp
  532.  
  533.     LEA    $DFF0A0,A5
  534.     LEA    mt_chan1temp(PC),A6
  535.     BSR.S    mt_PlayVoice
  536.     LEA    $DFF0B0,A5
  537.     LEA    mt_chan2temp(PC),A6
  538.     BSR.S    mt_PlayVoice
  539.     LEA    $DFF0C0,A5
  540.     LEA    mt_chan3temp(PC),A6
  541.     BSR.S    mt_PlayVoice
  542.     LEA    $DFF0D0,A5
  543.     LEA    mt_chan4temp(PC),A6
  544.     BSR.S    mt_PlayVoice
  545.     BRA    mt_SetDMA
  546.  
  547. mt_PlayVoice
  548.     TST.L    (A6)
  549.     BNE.S    mt_plvskip
  550.     BSR    mt_PerNop
  551. mt_plvskip
  552.     MOVE.L    (A0,D1.L),(A6)
  553.     ADDQ.L    #4,D1
  554.     MOVEQ    #0,D2
  555.     MOVE.B    n_cmd(A6),D2
  556.     AND.B    #$F0,D2
  557.     LSR.B    #4,D2
  558.     MOVE.B    (A6),D0
  559.     AND.B    #$F0,D0
  560.     OR.B    D0,D2
  561.     TST.B    D2
  562.     BEQ    mt_SetRegs
  563.     MOVEQ    #0,D3
  564.     LEA    mt_SampleStarts(PC),A1
  565.     MOVE    D2,D4
  566.     SUBQ.L    #1,D2
  567.     ASL.L    #2,D2
  568.     MULU    #30,D4
  569.     MOVE.L    (A1,D2.L),n_start(A6)
  570.     MOVE.W    (A3,D4.L),n_length(A6)
  571.     MOVE.W    (A3,D4.L),n_reallength(A6)
  572.     MOVE.B    2(A3,D4.L),n_finetune(A6)
  573.     MOVE.B    3(A3,D4.L),n_volume(A6)
  574.     MOVE.W    4(A3,D4.L),D3 ; Get repeat
  575.     TST.W    D3
  576.     BEQ.S    mt_NoLoop
  577.     MOVE.L    n_start(A6),D2    ; Get start
  578.     ASL.W    #1,D3
  579.     ADD.L    D3,D2        ; Add repeat
  580.     MOVE.L    D2,n_loopstart(A6)
  581.     MOVE.L    D2,n_wavestart(A6)
  582.     MOVE.W    4(A3,D4.L),D0    ; Get repeat
  583.     ADD.W    6(A3,D4.L),D0    ; Add replen
  584.     MOVE.W    D0,n_length(A6)
  585.     MOVE.W    6(A3,D4.L),n_replen(A6)    ; Save replen
  586.     MOVEQ    #0,D0
  587.     MOVE.B    n_volume(A6),D0
  588.     MOVE.W    D0,8(A5)    ; Set volume
  589.     BRA.S    mt_SetRegs
  590.  
  591. mt_NoLoop
  592.     MOVE.L    n_start(A6),D2
  593.     ADD.L    D3,D2
  594.     MOVE.L    D2,n_loopstart(A6)
  595.     MOVE.L    D2,n_wavestart(A6)
  596.     MOVE.W    6(A3,D4.L),n_replen(A6)    ; Save replen
  597.     MOVEQ    #0,D0
  598.     MOVE.B    n_volume(A6),D0
  599.     MOVE.W    D0,8(A5)    ; Set volume
  600. mt_SetRegs
  601.     MOVE.W    (A6),D0
  602.     AND.W    #$0FFF,D0
  603.     BEQ    mt_CheckMoreEfx    ; If no note
  604.     MOVE.W    2(A6),D0
  605.     AND.W    #$0FF0,D0
  606.     CMP.W    #$0E50,D0
  607.     BEQ.S    mt_DoSetFineTune
  608.     MOVE.B    2(A6),D0
  609.     AND.B    #$0F,D0
  610.     CMP.B    #3,D0    ; TonePortamento
  611.     BEQ.S    mt_ChkTonePorta
  612.     CMP.B    #5,D0
  613.     BEQ.S    mt_ChkTonePorta
  614.     CMP.B    #9,D0    ; Sample Offset
  615.     BNE.S    mt_SetPeriod
  616.     BSR    mt_CheckMoreEfx
  617.     BRA.S    mt_SetPeriod
  618.  
  619. mt_DoSetFineTune
  620.     BSR    mt_SetFineTune
  621.     BRA.S    mt_SetPeriod
  622.  
  623. mt_ChkTonePorta
  624.     BSR    mt_SetTonePorta
  625.     BRA    mt_CheckMoreEfx
  626.  
  627. mt_SetPeriod
  628.     MOVEM.L    D0-D1/A0-A1,-(SP)
  629.     MOVE.W    (A6),D1
  630.     AND.W    #$0FFF,D1
  631.     LEA    mt_PeriodTable(PC),A1
  632.     MOVEQ    #0,D0
  633.     MOVEQ    #36,D7
  634. mt_ftuloop
  635.     CMP.W    (A1,D0.W),D1
  636.     BHS.S    mt_ftufound
  637.     ADDQ.L    #2,D0
  638.     DBRA    D7,mt_ftuloop
  639. mt_ftufound
  640.     MOVEQ    #0,D1
  641.     MOVE.B    n_finetune(A6),D1
  642.     MULU    #36*2,D1
  643.     ADD.L    D1,A1
  644.     MOVE.W    (A1,D0.W),n_period(A6)
  645.     MOVEM.L    (SP)+,D0-D1/A0-A1
  646.  
  647.     MOVE.W    2(A6),D0
  648.     AND.W    #$0FF0,D0
  649.     CMP.W    #$0ED0,D0 ; Notedelay
  650.     BEQ    mt_CheckMoreEfx
  651.  
  652.     MOVE.W    n_dmabit(A6),$DFF096
  653.     BTST    #2,n_wavecontrol(A6)
  654.     BNE.S    mt_vibnoc
  655.     CLR.B    n_vibratopos(A6)
  656. mt_vibnoc
  657.     BTST    #6,n_wavecontrol(A6)
  658.     BNE.S    mt_trenoc
  659.     CLR.B    n_tremolopos(A6)
  660. mt_trenoc
  661.     MOVE.L    n_start(A6),(A5)    ; Set start
  662.     MOVE.W    n_length(A6),4(A5)    ; Set length
  663.     MOVE.W    n_period(A6),D0
  664.     MOVE.W    D0,6(A5)        ; Set period
  665.     MOVE.W    n_dmabit(A6),D0
  666.     OR.W    D0,mt_DMACONtemp
  667.     BRA    mt_CheckMoreEfx
  668.  
  669. mt_SetDMA
  670.     MOVE.W    #300,D0
  671. mt_WaitDMA
  672.     DBRA    D0,mt_WaitDMA
  673.     MOVE.W    mt_DMACONtemp(PC),D0
  674.     OR.W    #$8000,D0
  675.     MOVE.W    D0,$DFF096
  676.     MOVE.W    #300,D0
  677. mt_WaitDMA2
  678.     DBRA    D0,mt_WaitDMA2
  679.  
  680.     LEA    $DFF000,A5
  681.     LEA    mt_chan4temp(PC),A6
  682.     MOVE.L    n_loopstart(A6),$D0(A5)
  683.     MOVE.W    n_replen(A6),$D4(A5)
  684.     LEA    mt_chan3temp(PC),A6
  685.     MOVE.L    n_loopstart(A6),$C0(A5)
  686.     MOVE.W    n_replen(A6),$C4(A5)
  687.     LEA    mt_chan2temp(PC),A6
  688.     MOVE.L    n_loopstart(A6),$B0(A5)
  689.     MOVE.W    n_replen(A6),$B4(A5)
  690.     LEA    mt_chan1temp(PC),A6
  691.     MOVE.L    n_loopstart(A6),$A0(A5)
  692.     MOVE.W    n_replen(A6),$A4(A5)
  693.  
  694. mt_dskip
  695.     ADD.W    #16,mt_PatternPos
  696.     MOVE.B    mt_PattDelTime,D0
  697.     BEQ.S    mt_dskc
  698.     MOVE.B    D0,mt_PattDelTime2
  699.     CLR.B    mt_PattDelTime
  700. mt_dskc    TST.B    mt_PattDelTime2
  701.     BEQ.S    mt_dska
  702.     SUBQ.B    #1,mt_PattDelTime2
  703.     BEQ.S    mt_dska
  704.     SUB.W    #16,mt_PatternPos
  705. mt_dska    TST.B    mt_PBreakFlag
  706.     BEQ.S    mt_nnpysk
  707.     SF    mt_PBreakFlag
  708.     MOVEQ    #0,D0
  709.     MOVE.B    mt_PBreakPos(PC),D0
  710.     CLR.B    mt_PBreakPos
  711.     LSL.W    #4,D0
  712.     MOVE.W    D0,mt_PatternPos
  713. mt_nnpysk
  714.     CMP.W    #1024,mt_PatternPos
  715.     BLO.S    mt_NoNewPosYet
  716. mt_NextPosition    
  717.     MOVEQ    #0,D0
  718.     MOVE.B    mt_PBreakPos(PC),D0
  719.     LSL.W    #4,D0
  720.     MOVE.W    D0,mt_PatternPos
  721.     CLR.B    mt_PBreakPos
  722.     CLR.B    mt_PosJumpFlag
  723.     ADDQ.B    #1,mt_SongPos
  724.     AND.B    #$7F,mt_SongPos
  725.     MOVE.B    mt_SongPos(PC),D1
  726.     MOVE.L    mt_SongDataPtr(PC),A0
  727.     CMP.B    950(A0),D1
  728.     BLO.S    mt_NoNewPosYet
  729.     CLR.B    mt_SongPos
  730. mt_NoNewPosYet    
  731.     TST.B    mt_PosJumpFlag
  732.     BNE.S    mt_NextPosition
  733.     MOVEM.L    (SP)+,D0-D4/A0-A6
  734.     RTS
  735.  
  736. mt_CheckEfx
  737.     BSR    mt_UpdateFunk
  738.     MOVE.W    n_cmd(A6),D0
  739.     AND.W    #$0FFF,D0
  740.     BEQ.S    mt_PerNop
  741.     MOVE.B    n_cmd(A6),D0
  742.     AND.B    #$0F,D0
  743.     BEQ.S    mt_Arpeggio
  744.     CMP.B    #1,D0
  745.     BEQ    mt_PortaUp
  746.     CMP.B    #2,D0
  747.     BEQ    mt_PortaDown
  748.     CMP.B    #3,D0
  749.     BEQ    mt_TonePortamento
  750.     CMP.B    #4,D0
  751.     BEQ    mt_Vibrato
  752.     CMP.B    #5,D0
  753.     BEQ    mt_TonePlusVolSlide
  754.     CMP.B    #6,D0
  755.     BEQ    mt_VibratoPlusVolSlide
  756.     CMP.B    #$E,D0
  757.     BEQ    mt_E_Commands
  758. SetBack    MOVE.W    n_period(A6),6(A5)
  759.     CMP.B    #7,D0
  760.     BEQ    mt_Tremolo
  761.     CMP.B    #$A,D0
  762.     BEQ    mt_VolumeSlide
  763. mt_Return2
  764.     RTS
  765.  
  766. mt_PerNop
  767.     MOVE.W    n_period(A6),6(A5)
  768.     RTS
  769.  
  770. mt_Arpeggio
  771.     MOVEQ    #0,D0
  772.     MOVE.B    mt_counter(PC),D0
  773.     DIVS    #3,D0
  774.     SWAP    D0
  775.     CMP.W    #0,D0
  776.     BEQ.S    mt_Arpeggio2
  777.     CMP.W    #2,D0
  778.     BEQ.S    mt_Arpeggio1
  779.     MOVEQ    #0,D0
  780.     MOVE.B    n_cmdlo(A6),D0
  781.     LSR.B    #4,D0
  782.     BRA.S    mt_Arpeggio3
  783.  
  784. mt_Arpeggio1
  785.     MOVEQ    #0,D0
  786.     MOVE.B    n_cmdlo(A6),D0
  787.     AND.B    #15,D0
  788.     BRA.S    mt_Arpeggio3
  789.  
  790. mt_Arpeggio2
  791.     MOVE.W    n_period(A6),D2
  792.     BRA.S    mt_Arpeggio4
  793.  
  794. mt_Arpeggio3
  795.     ASL.W    #1,D0
  796.     MOVEQ    #0,D1
  797.     MOVE.B    n_finetune(A6),D1
  798.     MULU    #36*2,D1
  799.     LEA    mt_PeriodTable(PC),A0
  800.     ADD.L    D1,A0
  801.     MOVEQ    #0,D1
  802.     MOVE.W    n_period(A6),D1
  803.     MOVEQ    #36,D7
  804. mt_arploop
  805.     MOVE.W    (A0,D0.W),D2
  806.     CMP.W    (A0),D1
  807.     BHS.S    mt_Arpeggio4
  808.     ADDQ.L    #2,A0
  809.     DBRA    D7,mt_arploop
  810.     RTS
  811.  
  812. mt_Arpeggio4
  813.     MOVE.W    D2,6(A5)
  814.     RTS
  815.  
  816. mt_FinePortaUp
  817.     TST.B    mt_counter
  818.     BNE.S    mt_Return2
  819.     MOVE.B    #$0F,mt_LowMask
  820. mt_PortaUp
  821.     MOVEQ    #0,D0
  822.     MOVE.B    n_cmdlo(A6),D0
  823.     AND.B    mt_LowMask(PC),D0
  824.     MOVE.B    #$FF,mt_LowMask
  825.     SUB.W    D0,n_period(A6)
  826.     MOVE.W    n_period(A6),D0
  827.     AND.W    #$0FFF,D0
  828.     CMP.W    #113,D0
  829.     BPL.S    mt_PortaUskip
  830.     AND.W    #$F000,n_period(A6)
  831.     OR.W    #113,n_period(A6)
  832. mt_PortaUskip
  833.     MOVE.W    n_period(A6),D0
  834.     AND.W    #$0FFF,D0
  835.     MOVE.W    D0,6(A5)
  836.     RTS    
  837.  
  838. mt_FinePortaDown
  839.     TST.B    mt_counter
  840.     BNE    mt_Return2
  841.     MOVE.B    #$0F,mt_LowMask
  842. mt_PortaDown
  843.     CLR.W    D0
  844.     MOVE.B    n_cmdlo(A6),D0
  845.     AND.B    mt_LowMask(PC),D0
  846.     MOVE.B    #$FF,mt_LowMask
  847.     ADD.W    D0,n_period(A6)
  848.     MOVE.W    n_period(A6),D0
  849.     AND.W    #$0FFF,D0
  850.     CMP.W    #856,D0
  851.     BMI.S    mt_PortaDskip
  852.     AND.W    #$F000,n_period(A6)
  853.     OR.W    #856,n_period(A6)
  854. mt_PortaDskip
  855.     MOVE.W    n_period(A6),D0
  856.     AND.W    #$0FFF,D0
  857.     MOVE.W    D0,6(A5)
  858.     RTS
  859.  
  860. mt_SetTonePorta
  861.     MOVE.L    A0,-(SP)
  862.     MOVE.W    (A6),D2
  863.     AND.W    #$0FFF,D2
  864.     MOVEQ    #0,D0
  865.     MOVE.B    n_finetune(A6),D0
  866.     MULU    #37*2,D0
  867.     LEA    mt_PeriodTable(PC),A0
  868.     ADD.L    D0,A0
  869.     MOVEQ    #0,D0
  870. mt_StpLoop
  871.     CMP.W    (A0,D0.W),D2
  872.     BHS.S    mt_StpFound
  873.     ADDQ.W    #2,D0
  874.     CMP.W    #37*2,D0
  875.     BLO.S    mt_StpLoop
  876.     MOVEQ    #35*2,D0
  877. mt_StpFound
  878.     MOVE.B    n_finetune(A6),D2
  879.     AND.B    #8,D2
  880.     BEQ.S    mt_StpGoss
  881.     TST.W    D0
  882.     BEQ.S    mt_StpGoss
  883.     SUBQ.W    #2,D0
  884. mt_StpGoss
  885.     MOVE.W    (A0,D0.W),D2
  886.     MOVE.L    (SP)+,A0
  887.     MOVE.W    D2,n_wantedperiod(A6)
  888.     MOVE.W    n_period(A6),D0
  889.     CLR.B    n_toneportdirec(A6)
  890.     CMP.W    D0,D2
  891.     BEQ.S    mt_ClearTonePorta
  892.     BGE    mt_Return2
  893.     MOVE.B    #1,n_toneportdirec(A6)
  894.     RTS
  895.  
  896. mt_ClearTonePorta
  897.     CLR.W    n_wantedperiod(A6)
  898.     RTS
  899.  
  900. mt_TonePortamento
  901.     MOVE.B    n_cmdlo(A6),D0
  902.     BEQ.S    mt_TonePortNoChange
  903.     MOVE.B    D0,n_toneportspeed(A6)
  904.     CLR.B    n_cmdlo(A6)
  905. mt_TonePortNoChange
  906.     TST.W    n_wantedperiod(A6)
  907.     BEQ    mt_Return2
  908.     MOVEQ    #0,D0
  909.     MOVE.B    n_toneportspeed(A6),D0
  910.     TST.B    n_toneportdirec(A6)
  911.     BNE.S    mt_TonePortaUp
  912. mt_TonePortaDown
  913.     ADD.W    D0,n_period(A6)
  914.     MOVE.W    n_wantedperiod(A6),D0
  915.     CMP.W    n_period(A6),D0
  916.     BGT.S    mt_TonePortaSetPer
  917.     MOVE.W    n_wantedperiod(A6),n_period(A6)
  918.     CLR.W    n_wantedperiod(A6)
  919.     BRA.S    mt_TonePortaSetPer
  920.  
  921. mt_TonePortaUp
  922.     SUB.W    D0,n_period(A6)
  923.     MOVE.W    n_wantedperiod(A6),D0
  924.     CMP.W    n_period(A6),D0
  925.     BLT.S    mt_TonePortaSetPer
  926.     MOVE.W    n_wantedperiod(A6),n_period(A6)
  927.     CLR.W    n_wantedperiod(A6)
  928.  
  929. mt_TonePortaSetPer
  930.     MOVE.W    n_period(A6),D2
  931.     MOVE.B    n_glissfunk(A6),D0
  932.     AND.B    #$0F,D0
  933.     BEQ.S    mt_GlissSkip
  934.     MOVEQ    #0,D0
  935.     MOVE.B    n_finetune(A6),D0
  936.     MULU    #36*2,D0
  937.     LEA    mt_PeriodTable(PC),A0
  938.     ADD.L    D0,A0
  939.     MOVEQ    #0,D0
  940. mt_GlissLoop
  941.     CMP.W    (A0,D0.W),D2
  942.     BHS.S    mt_GlissFound
  943.     ADDQ.W    #2,D0
  944.     CMP.W    #36*2,D0
  945.     BLO.S    mt_GlissLoop
  946.     MOVEQ    #35*2,D0
  947. mt_GlissFound
  948.     MOVE.W    (A0,D0.W),D2
  949. mt_GlissSkip
  950.     MOVE.W    D2,6(A5) ; Set period
  951.     RTS
  952.  
  953. mt_Vibrato
  954.     MOVE.B    n_cmdlo(A6),D0
  955.     BEQ.S    mt_Vibrato2
  956.     MOVE.B    n_vibratocmd(A6),D2
  957.     AND.B    #$0F,D0
  958.     BEQ.S    mt_vibskip
  959.     AND.B    #$F0,D2
  960.     OR.B    D0,D2
  961. mt_vibskip
  962.     MOVE.B    n_cmdlo(A6),D0
  963.     AND.B    #$F0,D0
  964.     BEQ.S    mt_vibskip2
  965.     AND.B    #$0F,D2
  966.     OR.B    D0,D2
  967. mt_vibskip2
  968.     MOVE.B    D2,n_vibratocmd(A6)
  969. mt_Vibrato2
  970.     MOVE.B    n_vibratopos(A6),D0
  971.     LEA    mt_VibratoTable(PC),A4
  972.     LSR.W    #2,D0
  973.     AND.W    #$001F,D0
  974.     MOVEQ    #0,D2
  975.     MOVE.B    n_wavecontrol(A6),D2
  976.     AND.B    #$03,D2
  977.     BEQ.S    mt_vib_sine
  978.     LSL.B    #3,D0
  979.     CMP.B    #1,D2
  980.     BEQ.S    mt_vib_rampdown
  981.     MOVE.B    #255,D2
  982.     BRA.S    mt_vib_set
  983. mt_vib_rampdown
  984.     TST.B    n_vibratopos(A6)
  985.     BPL.S    mt_vib_rampdown2
  986.     MOVE.B    #255,D2
  987.     SUB.B    D0,D2
  988.     BRA.S    mt_vib_set
  989. mt_vib_rampdown2
  990.     MOVE.B    D0,D2
  991.     BRA.S    mt_vib_set
  992. mt_vib_sine
  993.     MOVE.B    0(A4,D0.W),D2
  994. mt_vib_set
  995.     MOVE.B    n_vibratocmd(A6),D0
  996.     AND.W    #15,D0
  997.     MULU    D0,D2
  998.     LSR.W    #7,D2
  999.     MOVE.W    n_period(A6),D0
  1000.     TST.B    n_vibratopos(A6)
  1001.     BMI.S    mt_VibratoNeg
  1002.     ADD.W    D2,D0
  1003.     BRA.S    mt_Vibrato3
  1004. mt_VibratoNeg
  1005.     SUB.W    D2,D0
  1006. mt_Vibrato3
  1007.     MOVE.W    D0,6(A5)
  1008.     MOVE.B    n_vibratocmd(A6),D0
  1009.     LSR.W    #2,D0
  1010.     AND.W    #$003C,D0
  1011.     ADD.B    D0,n_vibratopos(A6)
  1012.     RTS
  1013.  
  1014. mt_TonePlusVolSlide
  1015.     BSR    mt_TonePortNoChange
  1016.     BRA    mt_VolumeSlide
  1017.  
  1018. mt_VibratoPlusVolSlide
  1019.     BSR.S    mt_Vibrato2
  1020.     BRA    mt_VolumeSlide
  1021.  
  1022. mt_Tremolo
  1023.     MOVE.B    n_cmdlo(A6),D0
  1024.     BEQ.S    mt_Tremolo2
  1025.     MOVE.B    n_tremolocmd(A6),D2
  1026.     AND.B    #$0F,D0
  1027.     BEQ.S    mt_treskip
  1028.     AND.B    #$F0,D2
  1029.     OR.B    D0,D2
  1030. mt_treskip
  1031.     MOVE.B    n_cmdlo(A6),D0
  1032.     AND.B    #$F0,D0
  1033.     BEQ.S    mt_treskip2
  1034.     AND.B    #$0F,D2
  1035.     OR.B    D0,D2
  1036. mt_treskip2
  1037.     MOVE.B    D2,n_tremolocmd(A6)
  1038. mt_Tremolo2
  1039.     MOVE.B    n_tremolopos(A6),D0
  1040.     LEA    mt_VibratoTable(PC),A4
  1041.     LSR.W    #2,D0
  1042.     AND.W    #$001F,D0
  1043.     MOVEQ    #0,D2
  1044.     MOVE.B    n_wavecontrol(A6),D2
  1045.     LSR.B    #4,D2
  1046.     AND.B    #$03,D2
  1047.     BEQ.S    mt_tre_sine
  1048.     LSL.B    #3,D0
  1049.     CMP.B    #1,D2
  1050.     BEQ.S    mt_tre_rampdown
  1051.     MOVE.B    #255,D2
  1052.     BRA.S    mt_tre_set
  1053. mt_tre_rampdown
  1054.     TST.B    n_vibratopos(A6)
  1055.     BPL.S    mt_tre_rampdown2
  1056.     MOVE.B    #255,D2
  1057.     SUB.B    D0,D2
  1058.     BRA.S    mt_tre_set
  1059. mt_tre_rampdown2
  1060.     MOVE.B    D0,D2
  1061.     BRA.S    mt_tre_set
  1062. mt_tre_sine
  1063.     MOVE.B    0(A4,D0.W),D2
  1064. mt_tre_set
  1065.     MOVE.B    n_tremolocmd(A6),D0
  1066.     AND.W    #15,D0
  1067.     MULU    D0,D2
  1068.     LSR.W    #6,D2
  1069.     MOVEQ    #0,D0
  1070.     MOVE.B    n_volume(A6),D0
  1071.     TST.B    n_tremolopos(A6)
  1072.     BMI.S    mt_TremoloNeg
  1073.     ADD.W    D2,D0
  1074.     BRA.S    mt_Tremolo3
  1075. mt_TremoloNeg
  1076.     SUB.W    D2,D0
  1077. mt_Tremolo3
  1078.     BPL.S    mt_TremoloSkip
  1079.     CLR.W    D0
  1080. mt_TremoloSkip
  1081.     CMP.W    #$40,D0
  1082.     BLS.S    mt_TremoloOk
  1083.     MOVE.W    #$40,D0
  1084. mt_TremoloOk
  1085.     MOVE.W    D0,8(A5)
  1086.     MOVE.B    n_tremolocmd(A6),D0
  1087.     LSR.W    #2,D0
  1088.     AND.W    #$003C,D0
  1089.     ADD.B    D0,n_tremolopos(A6)
  1090.     RTS
  1091.  
  1092. mt_SampleOffset
  1093.     MOVEQ    #0,D0
  1094.     MOVE.B    n_cmdlo(A6),D0
  1095.     BEQ.S    mt_sononew
  1096.     MOVE.B    D0,n_sampleoffset(A6)
  1097. mt_sononew
  1098.     MOVE.B    n_sampleoffset(A6),D0
  1099.     LSL.W    #7,D0
  1100.     CMP.W    n_length(A6),D0
  1101.     BGE.S    mt_sofskip
  1102.     SUB.W    D0,n_length(A6)
  1103.     LSL.W    #1,D0
  1104.     ADD.L    D0,n_start(A6)
  1105.     RTS
  1106. mt_sofskip
  1107.     MOVE.W    #$0001,n_length(A6)
  1108.     RTS
  1109.  
  1110. mt_VolumeSlide
  1111.     MOVEQ    #0,D0
  1112.     MOVE.B    n_cmdlo(A6),D0
  1113.     LSR.B    #4,D0
  1114.     TST.B    D0
  1115.     BEQ.S    mt_VolSlideDown
  1116. mt_VolSlideUp
  1117.     ADD.B    D0,n_volume(A6)
  1118.     CMP.B    #$40,n_volume(A6)
  1119.     BMI.S    mt_vsuskip
  1120.     MOVE.B    #$40,n_volume(A6)
  1121. mt_vsuskip
  1122.     MOVE.B    n_volume(A6),D0
  1123.     MOVE.W    D0,8(A5)
  1124.     RTS
  1125.  
  1126. mt_VolSlideDown
  1127.     MOVEQ    #0,D0
  1128.     MOVE.B    n_cmdlo(A6),D0
  1129.     AND.B    #$0F,D0
  1130. mt_VolSlideDown2
  1131.     SUB.B    D0,n_volume(A6)
  1132.     BPL.S    mt_vsdskip
  1133.     CLR.B    n_volume(A6)
  1134. mt_vsdskip
  1135.     MOVE.B    n_volume(A6),D0
  1136.     MOVE.W    D0,8(A5)
  1137.     RTS
  1138.  
  1139. mt_PositionJump
  1140.     MOVE.B    n_cmdlo(A6),D0
  1141.     SUBQ.B    #1,D0
  1142.     MOVE.B    D0,mt_SongPos
  1143. mt_pj2    CLR.B    mt_PBreakPos
  1144.     ST     mt_PosJumpFlag
  1145.     RTS
  1146.  
  1147. mt_VolumeChange
  1148.     MOVEQ    #0,D0
  1149.     MOVE.B    n_cmdlo(A6),D0
  1150.     CMP.B    #$40,D0
  1151.     BLS.S    mt_VolumeOk
  1152.     MOVEQ    #$40,D0
  1153. mt_VolumeOk
  1154.     MOVE.B    D0,n_volume(A6)
  1155.     MOVE.W    D0,8(A5)
  1156.     RTS
  1157.  
  1158. mt_PatternBreak
  1159.     MOVEQ    #0,D0
  1160.     MOVE.B    n_cmdlo(A6),D0
  1161.     MOVE.L    D0,D2
  1162.     LSR.B    #4,D0
  1163.     MULU    #10,D0
  1164.     AND.B    #$0F,D2
  1165.     ADD.B    D2,D0
  1166.     CMP.B    #63,D0
  1167.     BHI.S    mt_pj2
  1168.     MOVE.B    D0,mt_PBreakPos
  1169.     ST    mt_PosJumpFlag
  1170.     RTS
  1171.  
  1172. mt_SetSpeed
  1173.     MOVE.B    3(A6),D0
  1174.     BEQ    mt_Return2
  1175.     CLR.B    mt_counter
  1176.     MOVE.B    D0,mt_speed
  1177.     RTS
  1178.  
  1179. mt_CheckMoreEfx
  1180.     BSR    mt_UpdateFunk
  1181.     MOVE.B    2(A6),D0
  1182.     AND.B    #$0F,D0
  1183.     CMP.B    #$9,D0
  1184.     BEQ    mt_SampleOffset
  1185.     CMP.B    #$B,D0
  1186.     BEQ    mt_PositionJump
  1187.     CMP.B    #$D,D0
  1188.     BEQ.S    mt_PatternBreak
  1189.     CMP.B    #$E,D0
  1190.     BEQ.S    mt_E_Commands
  1191.     CMP.B    #$F,D0
  1192.     BEQ.S    mt_SetSpeed
  1193.     CMP.B    #$C,D0
  1194.     BEQ    mt_VolumeChange
  1195.     BRA    mt_PerNop
  1196.  
  1197. mt_E_Commands
  1198.     MOVE.B    n_cmdlo(A6),D0
  1199.     AND.B    #$F0,D0
  1200.     LSR.B    #4,D0
  1201.     BEQ.S    mt_FilterOnOff
  1202.     CMP.B    #1,D0
  1203.     BEQ    mt_FinePortaUp
  1204.     CMP.B    #2,D0
  1205.     BEQ    mt_FinePortaDown
  1206.     CMP.B    #3,D0
  1207.     BEQ.S    mt_SetGlissControl
  1208.     CMP.B    #4,D0
  1209.     BEQ    mt_SetVibratoControl
  1210.     CMP.B    #5,D0
  1211.     BEQ    mt_SetFineTune
  1212.     CMP.B    #6,D0
  1213.     BEQ    mt_JumpLoop
  1214.     CMP.B    #7,D0
  1215.     BEQ    mt_SetTremoloControl
  1216.     CMP.B    #9,D0
  1217.     BEQ    mt_RetrigNote
  1218.     CMP.B    #$A,D0
  1219.     BEQ    mt_VolumeFineUp
  1220.     CMP.B    #$B,D0
  1221.     BEQ    mt_VolumeFineDown
  1222.     CMP.B    #$C,D0
  1223.     BEQ    mt_NoteCut
  1224.     CMP.B    #$D,D0
  1225.     BEQ    mt_NoteDelay
  1226.     CMP.B    #$E,D0
  1227.     BEQ    mt_PatternDelay
  1228.     CMP.B    #$F,D0
  1229.     BEQ    mt_FunkIt
  1230.     RTS
  1231.  
  1232. mt_FilterOnOff
  1233.     MOVE.B    n_cmdlo(A6),D0
  1234.     AND.B    #1,D0
  1235.     ASL.B    #1,D0
  1236.     AND.B    #$FD,$BFE001
  1237.     OR.B    D0,$BFE001
  1238.     RTS    
  1239.  
  1240. mt_SetGlissControl
  1241.     MOVE.B    n_cmdlo(A6),D0
  1242.     AND.B    #$0F,D0
  1243.     AND.B    #$F0,n_glissfunk(A6)
  1244.     OR.B    D0,n_glissfunk(A6)
  1245.     RTS
  1246.  
  1247. mt_SetVibratoControl
  1248.     MOVE.B    n_cmdlo(A6),D0
  1249.     AND.B    #$0F,D0
  1250.     AND.B    #$F0,n_wavecontrol(A6)
  1251.     OR.B    D0,n_wavecontrol(A6)
  1252.     RTS
  1253.  
  1254. mt_SetFineTune
  1255.     MOVE.B    n_cmdlo(A6),D0
  1256.     AND.B    #$0F,D0
  1257.     MOVE.B    D0,n_finetune(A6)
  1258.     RTS
  1259.  
  1260. mt_JumpLoop
  1261.     TST.B    mt_counter
  1262.     BNE    mt_Return2
  1263.     MOVE.B    n_cmdlo(A6),D0
  1264.     AND.B    #$0F,D0
  1265.     BEQ.S    mt_SetLoop
  1266.     TST.B    n_loopcount(A6)
  1267.     BEQ.S    mt_jumpcnt
  1268.     SUBQ.B    #1,n_loopcount(A6)
  1269.     BEQ    mt_Return2
  1270. mt_jmploop    MOVE.B    n_pattpos(A6),mt_PBreakPos
  1271.     ST    mt_PBreakFlag
  1272.     RTS
  1273.  
  1274. mt_jumpcnt
  1275.     MOVE.B    D0,n_loopcount(A6)
  1276.     BRA.S    mt_jmploop
  1277.  
  1278. mt_SetLoop
  1279.     MOVE.W    mt_PatternPos(PC),D0
  1280.     LSR.W    #4,D0
  1281.     MOVE.B    D0,n_pattpos(A6)
  1282.     RTS
  1283.  
  1284. mt_SetTremoloControl
  1285.     MOVE.B    n_cmdlo(A6),D0
  1286.     AND.B    #$0F,D0
  1287.     LSL.B    #4,D0
  1288.     AND.B    #$0F,n_wavecontrol(A6)
  1289.     OR.B    D0,n_wavecontrol(A6)
  1290.     RTS
  1291.  
  1292. mt_RetrigNote
  1293.     MOVE.L    D1,-(SP)
  1294.     MOVEQ    #0,D0
  1295.     MOVE.B    n_cmdlo(A6),D0
  1296.     AND.B    #$0F,D0
  1297.     BEQ.S    mt_rtnend
  1298.     MOVEQ    #0,D1
  1299.     MOVE.B    mt_counter(PC),D1
  1300.     BNE.S    mt_rtnskp
  1301.     MOVE.W    (A6),D1
  1302.     AND.W    #$0FFF,D1
  1303.     BNE.S    mt_rtnend
  1304.     MOVEQ    #0,D1
  1305.     MOVE.B    mt_counter(PC),D1
  1306. mt_rtnskp
  1307.     DIVU    D0,D1
  1308.     SWAP    D1
  1309.     TST.W    D1
  1310.     BNE.S    mt_rtnend
  1311. mt_DoRetrig
  1312.     MOVE.W    n_dmabit(A6),$DFF096    ; Channel DMA off
  1313.     MOVE.L    n_start(A6),(A5)    ; Set sampledata pointer
  1314.     MOVE.W    n_length(A6),4(A5)    ; Set length
  1315.     MOVE.W    #300,D0
  1316. mt_rtnloop1
  1317.     DBRA    D0,mt_rtnloop1
  1318.     MOVE.W    n_dmabit(A6),D0
  1319.     BSET    #15,D0
  1320.     MOVE.W    D0,$DFF096
  1321.     MOVE.W    #300,D0
  1322. mt_rtnloop2
  1323.     DBRA    D0,mt_rtnloop2
  1324.     MOVE.L    n_loopstart(A6),(A5)
  1325.     MOVE.L    n_replen(A6),4(A5)
  1326. mt_rtnend
  1327.     MOVE.L    (SP)+,D1
  1328.     RTS
  1329.  
  1330. mt_VolumeFineUp
  1331.     TST.B    mt_counter
  1332.     BNE    mt_Return2
  1333.     MOVEQ    #0,D0
  1334.     MOVE.B    n_cmdlo(A6),D0
  1335.     AND.B    #$F,D0
  1336.     BRA    mt_VolSlideUp
  1337.  
  1338. mt_VolumeFineDown
  1339.     TST.B    mt_counter
  1340.     BNE    mt_Return2
  1341.     MOVEQ    #0,D0
  1342.     MOVE.B    n_cmdlo(A6),D0
  1343.     AND.B    #$0F,D0
  1344.     BRA    mt_VolSlideDown2
  1345.  
  1346. mt_NoteCut
  1347.     MOVEQ    #0,D0
  1348.     MOVE.B    n_cmdlo(A6),D0
  1349.     AND.B    #$0F,D0
  1350.     CMP.B    mt_counter(PC),D0
  1351.     BNE    mt_Return2
  1352.     CLR.B    n_volume(A6)
  1353.     MOVE.W    #0,8(A5)
  1354.     RTS
  1355.  
  1356. mt_NoteDelay
  1357.     MOVEQ    #0,D0
  1358.     MOVE.B    n_cmdlo(A6),D0
  1359.     AND.B    #$0F,D0
  1360.     CMP.B    mt_Counter,D0
  1361.     BNE    mt_Return2
  1362.     MOVE.W    (A6),D0
  1363.     BEQ    mt_Return2
  1364.     MOVE.L    D1,-(SP)
  1365.     BRA    mt_DoRetrig
  1366.  
  1367. mt_PatternDelay
  1368.     TST.B    mt_counter
  1369.     BNE    mt_Return2
  1370.     MOVEQ    #0,D0
  1371.     MOVE.B    n_cmdlo(A6),D0
  1372.     AND.B    #$0F,D0
  1373.     TST.B    mt_PattDelTime2
  1374.     BNE    mt_Return2
  1375.     ADDQ.B    #1,D0
  1376.     MOVE.B    D0,mt_PattDelTime
  1377.     RTS
  1378.  
  1379. mt_FunkIt
  1380.     TST.B    mt_counter
  1381.     BNE    mt_Return2
  1382.     MOVE.B    n_cmdlo(A6),D0
  1383.     AND.B    #$0F,D0
  1384.     LSL.B    #4,D0
  1385.     AND.B    #$0F,n_glissfunk(A6)
  1386.     OR.B    D0,n_glissfunk(A6)
  1387.     TST.B    D0
  1388.     BEQ    mt_Return2
  1389. mt_UpdateFunk
  1390.     MOVEM.L    A0/D1,-(SP)
  1391.     MOVEQ    #0,D0
  1392.     MOVE.B    n_glissfunk(A6),D0
  1393.     LSR.B    #4,D0
  1394.     BEQ.S    mt_funkend
  1395.     LEA    mt_FunkTable(PC),A0
  1396.     MOVE.B    (A0,D0.W),D0
  1397.     ADD.B    D0,n_funkoffset(A6)
  1398.     BTST    #7,n_funkoffset(A6)
  1399.     BEQ.S    mt_funkend
  1400.     CLR.B    n_funkoffset(A6)
  1401.  
  1402.     MOVE.L    n_loopstart(A6),D0
  1403.     MOVEQ    #0,D1
  1404.     MOVE.W    n_replen(A6),D1
  1405.     ADD.L    D1,D0
  1406.     ADD.L    D1,D0
  1407.     MOVE.L    n_wavestart(A6),A0
  1408.     ADDQ.L    #1,A0
  1409.     CMP.L    D0,A0
  1410.     BLO.S    mt_funkok
  1411.     MOVE.L    n_loopstart(A6),A0
  1412. mt_funkok
  1413.     MOVE.L    A0,n_wavestart(A6)
  1414.     MOVEQ    #-1,D0
  1415.     SUB.B    (A0),D0
  1416.     MOVE.B    D0,(A0)
  1417. mt_funkend
  1418.     MOVEM.L    (SP)+,A0/D1
  1419.     RTS
  1420.  
  1421.  
  1422. mt_FunkTable dc.b 0,5,6,7,8,10,11,13,16,19,22,26,32,43,64,128
  1423.  
  1424. mt_VibratoTable    
  1425.     dc.b   0, 24, 49, 74, 97,120,141,161
  1426.     dc.b 180,197,212,224,235,244,250,253
  1427.     dc.b 255,253,250,244,235,224,212,197
  1428.     dc.b 180,161,141,120, 97, 74, 49, 24
  1429.  
  1430. mt_PeriodTable
  1431. ; Tuning 0, Normal
  1432.     dc.w    856,808,762,720,678,640,604,570,538,508,480,453
  1433.     dc.w    428,404,381,360,339,320,302,285,269,254,240,226
  1434.     dc.w    214,202,190,180,170,160,151,143,135,127,120,113
  1435. ; Tuning 1
  1436.     dc.w    850,802,757,715,674,637,601,567,535,505,477,450
  1437.     dc.w    425,401,379,357,337,318,300,284,268,253,239,225
  1438.     dc.w    213,201,189,179,169,159,150,142,134,126,119,113
  1439. ; Tuning 2
  1440.     dc.w    844,796,752,709,670,632,597,563,532,502,474,447
  1441.     dc.w    422,398,376,355,335,316,298,282,266,251,237,224
  1442.     dc.w    211,199,188,177,167,158,149,141,133,125,118,112
  1443. ; Tuning 3
  1444.     dc.w    838,791,746,704,665,628,592,559,528,498,470,444
  1445.     dc.w    419,395,373,352,332,314,296,280,264,249,235,222
  1446.     dc.w    209,198,187,176,166,157,148,140,132,125,118,111
  1447. ; Tuning 4
  1448.     dc.w    832,785,741,699,660,623,588,555,524,495,467,441
  1449.     dc.w    416,392,370,350,330,312,294,278,262,247,233,220
  1450.     dc.w    208,196,185,175,165,156,147,139,131,124,117,110
  1451. ; Tuning 5
  1452.     dc.w    826,779,736,694,655,619,584,551,520,491,463,437
  1453.     dc.w    413,390,368,347,328,309,292,276,260,245,232,219
  1454.     dc.w    206,195,184,174,164,155,146,138,130,123,116,109
  1455. ; Tuning 6
  1456.     dc.w    820,774,730,689,651,614,580,547,516,487,460,434
  1457.     dc.w    410,387,365,345,325,307,290,274,258,244,230,217
  1458.     dc.w    205,193,183,172,163,154,145,137,129,122,115,109
  1459. ; Tuning 7
  1460.     dc.w    814,768,725,684,646,610,575,543,513,484,457,431
  1461.     dc.w    407,384,363,342,323,305,288,272,256,242,228,216
  1462.     dc.w    204,192,181,171,161,152,144,136,128,121,114,108
  1463. ; Tuning -8
  1464.     dc.w    907,856,808,762,720,678,640,604,570,538,508,480
  1465.     dc.w    453,428,404,381,360,339,320,302,285,269,254,240
  1466.     dc.w    226,214,202,190,180,170,160,151,143,135,127,120
  1467. ; Tuning -7
  1468.     dc.w    900,850,802,757,715,675,636,601,567,535,505,477
  1469.     dc.w    450,425,401,379,357,337,318,300,284,268,253,238
  1470.     dc.w    225,212,200,189,179,169,159,150,142,134,126,119
  1471. ; Tuning -6
  1472.     dc.w    894,844,796,752,709,670,632,597,563,532,502,474
  1473.     dc.w    447,422,398,376,355,335,316,298,282,266,251,237
  1474.     dc.w    223,211,199,188,177,167,158,149,141,133,125,118
  1475. ; Tuning -5
  1476.     dc.w    887,838,791,746,704,665,628,592,559,528,498,470
  1477.     dc.w    444,419,395,373,352,332,314,296,280,264,249,235
  1478.     dc.w    222,209,198,187,176,166,157,148,140,132,125,118
  1479. ; Tuning -4
  1480.     dc.w    881,832,785,741,699,660,623,588,555,524,494,467
  1481.     dc.w    441,416,392,370,350,330,312,294,278,262,247,233
  1482.     dc.w    220,208,196,185,175,165,156,147,139,131,123,117
  1483. ; Tuning -3
  1484.     dc.w    875,826,779,736,694,655,619,584,551,520,491,463
  1485.     dc.w    437,413,390,368,347,328,309,292,276,260,245,232
  1486.     dc.w    219,206,195,184,174,164,155,146,138,130,123,116
  1487. ; Tuning -2
  1488.     dc.w    868,820,774,730,689,651,614,580,547,516,487,460
  1489.     dc.w    434,410,387,365,345,325,307,290,274,258,244,230
  1490.     dc.w    217,205,193,183,172,163,154,145,137,129,122,115
  1491. ; Tuning -1
  1492.     dc.w    862,814,768,725,684,646,610,575,543,513,484,457
  1493.     dc.w    431,407,384,363,342,323,305,288,272,256,242,228
  1494.     dc.w    216,203,192,181,171,161,152,144,136,128,121,114
  1495.  
  1496. mt_chan1temp    dc.l    0,0,0,0,0,$00010000,0,  0,0,0,0
  1497. mt_chan2temp    dc.l    0,0,0,0,0,$00020000,0,  0,0,0,0
  1498. mt_chan3temp    dc.l    0,0,0,0,0,$00040000,0,  0,0,0,0
  1499. mt_chan4temp    dc.l    0,0,0,0,0,$00080000,0,  0,0,0,0
  1500.  
  1501. mt_SampleStarts    dc.l    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1502.         dc.l    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1503.  
  1504. mt_SongDataPtr    dc.l 0
  1505.  
  1506. mt_speed    dc.b 6
  1507. mt_counter    dc.b 0
  1508. mt_SongPos    dc.b 0
  1509. mt_PBreakPos    dc.b 0
  1510. mt_PosJumpFlag    dc.b 0
  1511. mt_PBreakFlag    dc.b 0
  1512. mt_LowMask    dc.b 0
  1513. mt_PattDelTime    dc.b 0
  1514. mt_PattDelTime2    dc.b 0,0
  1515.  
  1516. mt_PatternPos    dc.w 0
  1517. mt_DMACONtemp    dc.w 0
  1518.  
  1519. ;/* End of File */
  1520.  
  1521.     
  1522.     Section    copdat,Data_c
  1523.  
  1524.  
  1525. mid:        dc.w    0
  1526. midadd:        dc.l    0
  1527. old_copper:    dc.l    0
  1528. graphics:    dc.l    0
  1529. dos:        dc.l    0
  1530.  
  1531. my_copper:    
  1532.  
  1533.         dc.w    $100,$0200    ; 4 bp - lores - 
  1534.         dc.w    $104,%0110    ; bp control reg
  1535.         dc.w    $108,0        ; bp modulo - odd
  1536.         dc.w    $10a,0        ; bp modulo - even
  1537.         dc.w    $180,black
  1538.         dc.w    $1fc,0
  1539.         
  1540.         dc.w    $1a0,$000
  1541.         dc.w    $1a2,$00a
  1542.         dc.w    $1a4,$006
  1543.         dc.w    $1a6,$003
  1544.         dc.w    $1a8,$000
  1545.         dc.w    $1aa,$00a
  1546.         dc.w    $1ac,$006
  1547.         dc.w    $1ae,$003
  1548.  
  1549.         dc.w    $120
  1550. spr1_lo:    dc.w    0,$122
  1551. spr1_hi:    dc.w    0,$124
  1552. spr2_lo:    dc.w    0,$126
  1553. spr2_hi:    dc.w    0,$128
  1554. spr3_lo:    dc.w    0,$12a
  1555. spr3_hi:    dc.w    0
  1556.  
  1557.         dc.w    $12c,0,$12e,0
  1558.         dc.w    $130,0,$132,0
  1559.         dc.w    $134,0,$136,0
  1560.         dc.w    $138,0,$13a,0
  1561.         dc.w    $13c,0,$13e,0
  1562.         
  1563.         dc.w    $92,$30        ; bp start horz
  1564.         dc.w    $94,$c8        ; bp stop horz
  1565.         
  1566.         dc.w    $8e,$2679    ; bp window start left
  1567.         dc.w    $90,$2cc7    ; bp window bot right
  1568.         
  1569.         dc.w    $102,$ff
  1570.  
  1571. cmap:        dc.w    $1fe,0
  1572.         dc.w    $182,0
  1573.         dc.w    $184,0
  1574.         dc.w    $186,0
  1575.         dc.w    $188,0
  1576.         dc.w    $18a,0
  1577.         dc.w    $18c,0
  1578.         dc.w    $18e,0
  1579.         dc.w    $190,0
  1580.         dc.w    $192,0
  1581.         dc.w    $194,0
  1582.         dc.w    $196,0
  1583.         dc.w    $198,0
  1584.         dc.w    $19a,0
  1585.         dc.w    $19c,0
  1586.         dc.w    $19e,0
  1587.         
  1588.         dc.w      $e0
  1589. bitplane0_hi:    dc.w    0,$e2
  1590. bitplane0_lo:    dc.w    0,$e4
  1591. bitplane1_hi:    dc.w    0,$e6
  1592. bitplane1_lo:    dc.w    0,$e8
  1593. bitplane2_hi:    dc.w    0,$ea
  1594. bitplane2_lo:    dc.w    0,$ec
  1595. bitplane3_hi:    dc.w    0,$ee
  1596. bitplane3_lo:    dc.w    0
  1597.  
  1598.         dc.w    $2800+xpos1,$fffe,$180,$008,$2900+xpos2,$fffe,$180,$000
  1599.         
  1600.         dc.w    $2e01,$ff00,$100,$4200
  1601.  
  1602.         dc.w    $7001,$ff00        
  1603. display_on:    dc.w    $100,$1200
  1604.  
  1605. colour_on:    dc.w    $182,$fff
  1606.         
  1607.         dc.w    $102,$0f
  1608.         
  1609.         dc.w    $0e0
  1610. bitplane4_hi:    dc.w    0
  1611.         dc.w    $e2
  1612. bitplane4_lo:    dc.w    0
  1613.         
  1614.         dc.w    $ffe1,$fffe    ; wait for end of ntsc screen
  1615.  
  1616.  
  1617.         dc.w    $2800+xpos1,$fffe,$180,$008,$2900+xpos2,$fffe,$180,black
  1618.  
  1619.         dc.w    $9c,$8010    ; irq set bits - ?
  1620.         dc.w    $ffff,$fffe    ; end of copper list
  1621.  
  1622.  
  1623. spritex1:
  1624.     dc.b    052,143,068,0
  1625.     setsprite
  1626.     dc.b    070,24,086,0
  1627.     setsprite
  1628.     dc.b    088,11,104,0
  1629.     setsprite
  1630.     dc.b    106,95,122,0
  1631.     setsprite
  1632.     dc.b    124,33,140,0
  1633.     setsprite
  1634.     dc.b    142,124,158,0
  1635.     setsprite
  1636.     dc.b    160,83,176,0
  1637.     setsprite
  1638.     dc.b    178,204,194,0
  1639.     setsprite
  1640.     dc.b    196,24,212,0
  1641.     setsprite
  1642.     dc.b    214,175,230,0
  1643.     setsprite
  1644.     dc.b    232,154,248,0
  1645.     setsprite
  1646.     dc.b    0,240,016,%00000110
  1647.     setsprite
  1648.     dc.b    18,168,34,%00000110
  1649.     setsprite
  1650.  
  1651.     dc.w    0,0,0,0
  1652.  
  1653. spritex2:
  1654.     dc.b    056,68,072,0
  1655.     setsprite
  1656.     dc.b    074,120,090,0
  1657.     setsprite
  1658.     dc.b    092,154,108,0
  1659.     setsprite
  1660.     dc.b    110,175,126,0
  1661.     setsprite
  1662.     dc.b    128,240,144,0
  1663.     setsprite
  1664.     dc.b    146,10,162,0
  1665.     setsprite
  1666.     dc.b    164,180,180,0
  1667.     setsprite
  1668.     dc.b    182,120,198,0
  1669.     setsprite
  1670.     dc.b    200,230,216,0
  1671.     setsprite
  1672.     dc.b    218,50,234,0
  1673.     setsprite
  1674.     dc.b    236,100,252,0
  1675.     setsprite
  1676.     dc.b    4,120,020,%00000110
  1677.     setsprite
  1678.     dc.b    22,10,38,%00000110
  1679.     setsprite
  1680.     
  1681.     dc.w    0,0,0,0
  1682.  
  1683. spritex3:
  1684.     dc.b    060,038,076,0
  1685.     setsprite
  1686.     dc.b    078,080,094,0
  1687.     setsprite
  1688.     dc.b    096,054,112,0
  1689.     setsprite
  1690.     dc.b    132,140,148,0
  1691.     setsprite
  1692.     dc.b    150,065,166,0
  1693.     setsprite
  1694.     dc.b    168,90,184,0
  1695.     setsprite
  1696.     dc.b    186,220,202,0
  1697.     setsprite
  1698.     dc.b    204,130,220,0
  1699.     setsprite
  1700.     dc.b    222,200,238,0
  1701.     setsprite
  1702.     dc.b    239,50,255,0
  1703.     setsprite
  1704.     dc.b    000,70,016,%00000110
  1705.     setsprite
  1706.     dc.b    018,30,034,%00000110
  1707.     setsprite
  1708.     
  1709.     dc.w    0,0,0,0
  1710.  
  1711. oldint:        dc.l    0
  1712. olddma:        dc.l    0
  1713. oldv3:        dc.l    0
  1714.     
  1715. glib:        dc.b    "graphics.library",0
  1716. dlib:        dc.b    "dos.library",0
  1717.         even        
  1718.  
  1719.     
  1720. screen:        incbin    "dh0:data/misc/singlelogo.bin"
  1721.  
  1722. font:        incbin    "dh0:data/wrd/keff10.wrd"
  1723.         incbin    "dh0:data/wrd/symbol2.wrd"
  1724.                 
  1725. newscr:        dc.l    0
  1726. flag:        dc.l    0
  1727.  
  1728. bplen        equ    ((font-screen)-32)/4
  1729. top_of_copper    equ    44+(bplen/40)
  1730. down        equ    top_of_copper+108
  1731.  
  1732. page:        dc.l    0
  1733. fade_colour:    dc.w    0
  1734.  
  1735. mt_data:    ;incbin    "dh0:modules/lsd/chip/mod.stoopidmuzak"
  1736.     dcb.b    12,0
  1737.  
  1738.  
  1739. page1:    dc.b    "»»» Lard Blasters+ «««",0
  1740.     dc.b    " ",0
  1741.     dc.b    " ",0
  1742.     dc.b    " ",0
  1743.     dc.b    "Fixed to work on all PAL Amigas",0
  1744.     dc.b    "by Muridae of LSD",0
  1745.     dc.b    " ",0
  1746.     dc.b    " ",0
  1747.     dc.b    " ",0
  1748.     dc.b    " ",0
  1749.     dc.b    0
  1750.  
  1751. page2:    dc.b    " Call LSD's cool boards:",0
  1752.     dc.b    " ",0
  1753.     dc.b    "--- THE POOL (LSD WHQ) ---",0
  1754.     dc.b    "+44 (0)51 480 7604",0
  1755.     dc.b    " ",0
  1756.     dc.b    "--- PURE SYNCHRONIZATION (UK) ---",0
  1757.     dc.b    "+44 (0)81 308 0371",0
  1758.     dc.b    " ",0
  1759.     dc.b    "--- PRAYER GATE (USHQ) ---",0
  1760.     dc.b    "+1 501 336 9661",0
  1761.     dc.b    0
  1762.  
  1763. page3:    dc.b    " Call LSD's cool boards:",0
  1764.     dc.b    " ",0
  1765.     dc.b    "--- PANIC ZONE (USA) ---",0
  1766.     dc.b    "+1 508 234 2150",0
  1767.     dc.b    " ",0
  1768.     dc.b    "--- PHREAKERS PHUNHOUSE (GHQ) ---",0
  1769.     dc.b    "+49 711 345 0385",0
  1770.     dc.b    " ",0
  1771.     dc.b    "--- THE DESOLATE ONE (G) ---",0
  1772.     dc.b    "+49 911 443 537",0
  1773.     dc.b    0
  1774.  
  1775. page4:    dc.b    " Call LSD's cool boards:",0
  1776.     dc.b    " ",0
  1777.     dc.b    "--- LOW SPARK (PHQ) ---",0
  1778.     dc.b    "NODE 1 : +351 19 431 348",0
  1779.     dc.b    "NODE 2 : +351 19 442 089",0
  1780.     dc.b    " ",0
  1781.     dc.b    "--- RIOT ZONE (USA) ---",00
  1782.     dc.b    "CURRENTLY OFF LINE",0
  1783.     dc.b    " ",0
  1784.     dc.b    "GREETING GO TO ALL OUR FRIENDS",0
  1785.     dc.b    "WORLDWIDE.",0
  1786.     dc.b    0
  1787.  
  1788.     section    screen,bss_C
  1789.     
  1790. screen2:    ds.b    80*256
  1791.  
  1792.  
  1793.     End
  1794.     
  1795.  
  1796.  
  1797.